Desbalanceamento#
Nesta seção o equacionamento realizado considerou a aplicação de uma massa de desbalanço excitando o sitema conforme proposto no livro texto da disciplina, “Rotordynamics Prediction in Engineering, Second Edition”, Lalanne and Ferraris [1998].
Foram calculadas as amplitudes de vibração em função da velocidade de rotação
Importando módulos e configurando o ambiente#
'''
Módulos standard
'''
from collections import namedtuple
'''
Bibliotecas de terceira parte
'''
import numpy as np
'''
Biblioteca criada para a realização das análises dinâmicas
no contexto da disciplina
'''
import rotor_analysis as rd
'''
Configurando pint.Quantity
'''
Q_ = rd.Q_
Definindo parâmetros#
# Material instances and properties
steel = rd.Material(name='Steel',
density=Q_(7800, 'kg/m^3'),
young_modulus=Q_(2e11,"Pa"))
# Shaft
L = Q_(0.4, 'm')
shaft = rd.Shaft(outer_radius=Q_(0.01, 'm'),
inner_radius=Q_(0.0, 'm'),
length=L,
material=steel)
# Disc
disc = rd.Disc(outer_radius=Q_(0.150, 'm'),
inner_radius=Q_(0.010, 'm'),
length=Q_(0.030, 'm'),
material=steel,
coordinate=L/3)
# Rotor
rotor = rd.Rotor(shaft, disc)
speed_range = np.linspace(0, 9000, 101)
# Unbalance
Unbalance = namedtuple(
'Unbalance',
['mass', 'radius']
)
'''
Numerical data Reference:
Rotordynamics Prediction in Engineering, Second Edition, by Michel
Lalanne and Guy Ferraris, Chapter 2: Monorotors, Subsection 2.1.6, page 17.
'''
unbal = Unbalance(
mass=Q_(1e-4, 'kg'),
radius=Q_(0.15, 'm')
)
def A1_unbal(speed, *args):
'''Function to compute the displacemente aplitude A1 of the unbalanced rotor at
some speed.
Args:
speed (float): Rotational speed in RPM.
args: unbalance named tuple with mass and radius as properties
Reference:
Rotordynamics Prediction in Engineering, Second Edition, by Michel
Lalanne and Guy Ferraris equation
'''
unbalance = args[0]
k1, k2 = rotor.stiffness
m = rotor.mass
spin = speed / 60 * 2 * np.pi
a = rotor.a
div = (k1 - m * spin**2) * (k2 - m * spin**2) - a**2 * spin**4
return (k2 - (m + a) * spin**2) * unbalance.mass.m * unbalance.radius.m * (spin)**2 * rotor.f(rotor.discs[0].coordinate.m) / div
# Computing the values
values = []
for speed in speed_range:
values.append(abs(A1_unbal(speed, unbal)))
# Generating the Standard Campbell Diagram
campbell_fig = rotor.plot_Campbell()
# Call the function to add the secondary y-axis
rd.add_secondary_yaxis(campbell_fig, values)
# Show the updatedvfigure
campbell_fig.show()
A seguir é calculado o valor da amplitude de vibração quando a rotação tende ao infinto.
'''
Reference:
Rotordynamics Prediction in Engineering, Second Edition, by Michel
Lalanne and Guy Ferraris equation 2.134
'''
unbal.mass.m * rotor.discs[0].outer_radius.m * rotor.f(rotor.discs[0].coordinate.m) \
/ (rotor.a - rotor.mass)
np.float64(-1.1371292754494908e-06)
Órbita#
Após o cômputo da amplitude da resposta ao desbalanço, plota-se os deslocamentos \(q1\) e \(q2\) formando-se assim a orbita descrita pelo centro do eixo. No caso abaixo temos a órbita simulando o encoder posicionado em q2 (no topo do eixo), e o desbalanço posicionado na chaveta.
Combinando os gráficos anteriormente gerados, temos:
orbit_plot = rd.interactive_orbit_campbell(campbell_fig,
A1_unbal,
A1_unbal,
unbal,
initial_speed=2700,
max_amplitude=2e-05)
orbit_plot.show()